#!/usr/bin/lua
local ApmByteArray = require("ApmByteArray")

-- 使用lpack来组成放入二进制数据块的字符串
--  string.pack的参数：第一个参数为format
local s_in_string = string.pack("<bihP2", 0x59, 11, 1101, "", "中文")

-- 创建二进制数据块
local t_bytearray = ApmByteArray.new()

-- 把组成的字符串放入到二进制数据块
t_bytearray:writeBuf(s_in_string)

-- 设置二进制数据块的解析位置，lua永远从1开始计数
t_bytearray:setPos(1)

-- 取得二进制数据块的内容长度
print("ByteArray.len:", t_bytearray:getLen())
-- 取得二进制数据块的1位byte数据
print("ByteArray.readByte:", t_bytearray:readByte())
print("ByteArray.readInt:", t_bytearray:readInt())
print("ByteArray.readShort:", t_bytearray:readShort())
print("ByteArray.readString:", t_bytearray:readStringUShort())
print("ByteArray.available:", t_bytearray:getAvailable())
-- 把二进制数据转化为string
print("ByteArray.toString(16):", t_bytearray:toString(16))


-- 创建二进制数据块
local t_bytearray_write = ApmByteArray.new()

-- 向二进制数据块写入一个字节
t_bytearray_write:writeByte(0x59)
-- 向二进制数据块写入一个int
:writeInt(11)
:writeShort(1101)
-- 向二进制数据块写入一个空的字符串
t_bytearray_write:writeStringUShort("")
-- 向二进制数据块写入中文
t_bytearray_write:writeStringUShort("中文")

-- 把二进制数据块的内容转换成字符串
print("ByteArray_write.toString(10):", t_bytearray_write:toString(10))


-- 取二进制数据中的一段数据
-- 创建二进制数据块
local t_bytearray_string = ApmByteArray.new()
local s_pack = string.pack("bbbbb", 0x61, 0x62, 0x00, 0x63, 0x64)
t_bytearray_string:writeBuf(s_pack)

-- 设置位置
t_bytearray_string:setPos(4)

-- 从第4个位置开始取2个byte的数据(0x63, 0x64)
print("ByteArray_read.readStringBytes:", t_bytearray_string:readStringBytes(2))

-- 数据做大小端转换
require("ApmReadByte")

local s_testread=string.pack("bbbb", 0x01,0x02,0x03,0x04)
-- true：小端 false：大端
print("ApmReadByte.readInt:", ApmReadByte.readInt(s_testread, true))

-- test dump
local t = {comp = "chukong", engine = "quick", author = {name = "John", age = 27}}
dump(t)
